#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <assert.h>

#define STACK_INIT_SIZE 100
#define STACK_INCREAMENT 10

typedef int ElmeType;
typedef struct
{
	ElmeType* base;
	ElmeType* top;
	int size;
}SqStack;

void InitStack(SqStack& S)
{
	S.base = (ElmeType*)malloc(sizeof(ElmeType) * STACK_INIT_SIZE);
	if (!S.base)
		exit(-1);
	S.top = S.base;
	S.size = STACK_INIT_SIZE;
}


void getStack(SqStack S, ElmeType& e)
{
	if (S.base == S.top)
		return;
	e = *(S.top - 1);
}

void StackPush(SqStack& S, ElmeType e)
{
	if (S.top - S.base == S.size)
	{
		S.base = (ElmeType*)realloc(S.base, sizeof(ElmeType) * (STACK_INIT_SIZE + STACK_INCREAMENT));
		if (!S.base)
			exit(-1);
	}
	S.top = S.base + S.size;
	S.size += STACK_INCREAMENT;
	*(S.top++) = e;
}


void StackPop(SqStack& S, ElmeType& e)
{
	if (S.top == S.base)
		return;
	S.top--;
	e = *(S.top);
}


bool IsEmpty(SqStack S)
{
	return S.top == 0;
}

void conversion(int N, int r,ElmeType &e)
{
	SqStack S;
	InitStack(S);
	while (N)
	{
		StackPush(S, N % r);
		N /= r;
	}
	while (!IsEmpty(S))
	{
		StackPop(S, e);
		printf("%d", e);
	}
}
}